﻿/*********************************************************************************
**                                                                              **
**  Copyright (C) 2019-2025 LiLong                                              **
**  This file is part of QCustomUi.                                             **
**                                                                              **
**  QCustomUi is free software: you can redistribute it and/or modify           **
**  it under the terms of the GNU Lesser General Public License as published by **
**  the Free Software Foundation, either version 3 of the License, or           **
**  (at your option) any later version.                                         **
**                                                                              **
**  QCustomUi is distributed in the hope that it will be useful,                **
**  but WITHOUT ANY WARRANTY; without even the implied warranty of              **
**  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               **
**  GNU Lesser General Public License for more details.                         **
**                                                                              **
**  You should have received a copy of the GNU Lesser General Public License    **
**  along with QCustomUi.  If not, see <https://www.gnu.org/licenses/>.         **
**********************************************************************************/
#pragma once

#include "qcustomui_global.h"

#include <QWidget>

class QPushButton;
class QCtmAbstractMultiPageItemModel;
class QCUSTOMUI_EXPORT QCtmMultiPageButtonBox : public QWidget
{
    Q_OBJECT
public:
    explicit QCtmMultiPageButtonBox(QWidget* parent = nullptr);
    ~QCtmMultiPageButtonBox();
    virtual void setModel(QCtmAbstractMultiPageItemModel* model);
    QCtmAbstractMultiPageItemModel* model() const;
    void setPageButtonCount(int buttonCount);
    int pageButtonCount() const;
    QPushButton* prevButton() const;
    QPushButton* nextButton() const;

private:
    void init();
private slots:
    void onPageCountChanged();
    void onCurrentPageChanged();
    void onModelReset();
    void updateState();

private:
    struct Impl;
    std::unique_ptr<Impl> m_impl;
};